/*
 * qiticg.c
 *
 *  Created on: 2019年9月4日
 *      Author: caesar
 */


// 测试gpio接口的测试用例源文件


#include "../lib/ls1c_public.h"
#include "../lib/ls1c_gpio.h"
#include "../lib/ls1c_delay.h"
#include "../lib/ls1c_irq.h"


// 按键中断的标志
volatile int qiti_irq_flag = 0;

volatile int fire_irq_flag = 0;

unsigned char firewarn[3] = {"0"};

unsigned char poisonwarn[3] = {"0"};

//unsigned int poison_flag = 0;
//unsigned int fire_flag = 0;

/*
 * 按键中断的处理函数
 * @IRQn 中断号
 * @param 传递给中断处理函数的参数
 */
void test_qiti_irqhandler(int IRQn, void *param)
{
	qiti_irq_flag = 1;
    printf("[%s]poison!\r\n", __FUNCTION__);
	strcpy(poisonwarn,"100");
//	poison_flag=1;

}

void test_fire_irqhandler(int IRQn, void *param)
{
	fire_irq_flag = 1;
	strcpy(firewarn,"100");
    printf("[%s]fire!\r\n", __FUNCTION__);
//    fire_flag = 1;
}

/*
 * 测试库中外部中断(gpio中断，按键中断)的相关接口
 * 按键被按下后，会产生一个中断
 */
void test_qiti_irq(void)
{
    unsigned int key_gpio = 59;     // GPIO85/I2C_SDA0
    int key_irq = LS1C_GPIO_TO_IRQ(key_gpio);

    // 初始化按键中断
    gpio_init(key_gpio, gpio_mode_input);
    gpio_set_irq_type(key_gpio, IRQ_TYPE_LEVEL_LOW);
//    gpio_set_irq_type(key_gpio, IRQ_TYPE_EDGE_FALLING);     // 当设为下降沿触发时，按下和弹起都会产生一次中断，理论上不应该这样，暂不知原因，改为低电平触发一切正常
    irq_install(key_irq, test_qiti_irqhandler, NULL);
    irq_enable(key_irq);
        if (1 == qiti_irq_flag)
        {
             // 延时10ms，消抖
            qiti_irq_flag = 0;      // 清标志

        }

}
void test_fire_irq(void)
{
    unsigned int fire_gpio1 =75 ;     // GPIO85/I2C_SDA0
    int key_irq = LS1C_GPIO_TO_IRQ(fire_gpio1);
//    static int count = 0;

    // 初始化按键中断
    gpio_init(fire_gpio1, gpio_mode_input);
    gpio_set_irq_type(fire_gpio1, IRQ_TYPE_LEVEL_LOW);
//    gpio_set_irq_type(key_gpio, IRQ_TYPE_EDGE_FALLING);     // 当设为下降沿触发时，按下和弹起都会产生一次中断，理论上不应该这样，暂不知原因，改为低电平触发一切正常
    irq_install(key_irq,test_fire_irqhandler, NULL);
    irq_enable(key_irq);
        if (1 == fire_irq_flag)
        {
            fire_irq_flag = 0;      // 清标志

        }

}

